package User;

import Book.BookShelf;
import ioperation.BorrowedOperation;
import ioperation.IOperation;

public abstract class User {
    protected String name;//共性名称
    //将操作提取出来作为接口
    //分别在子类中实现接口来实现不同界面的不同操作
    protected IOperation[] iOperations;
    //构造方法 方便子类继承和初始化父类的对象
    public  User(String name) {
        this.name = name;
    }
    //通过父类类型来接收子类类型实现多态（向上转型）
    //子类中有menu方法需要调用，但向上转型用父类接收调用不了子类所特有的方法
    //在父类中定义一个menu（）方法
    public abstract int menu();
    //通过获取到的不同的值来访问不同的操作
    public void doIoperation(int choice, BookShelf bookShelf){
        iOperations[choice].work(bookShelf);
    }





}
